5.2 Textdateien lesen und schreiben
 
Sollte die Datei noch nicht angelegt sein, dann wird sie erzeugt. Sie wird vom Objekt »StreamWriter« erzeugt. Es wird zu Beginn der Prozedur deklariert:
Dim objDateiMacher As System.IO.StreamWriter
Da diese Kaskade System.IO noch mehrmals verwendet wird, wird zu Beginn, das heißt vor dem Befehl
Public Class
der Befehl eingefügt, mit dem auf diese Klasse zugegriffen werden kann:
Imports System.IO
Nun kann die Prüfung auf File.Exists und die Deklaration verkürzt werden auf:
Dim objDateiMacher As StreamWriter
Und mit diesem Objekt kann eine Textdatei erzeugt werden:
objDateiMacher = New StreamWriter(strWinVerz & "\" & _
DATEINAME)
objDateiMacher.Close()
objDateiMacher = Nothing
Soll ein Text in der Datei stehen, dann könnte er mit dem Befehl
objDateiMacher.Write("C:\Eigene Dateien\Statistik.xls")
zwischen New und Close eingefügt werden.
Wenn die Datei »info.txt« existiert, dann kann ihr Inhalt ausgelesen werden. Dabei hilft das Objekt »StreamReader«. Es wird analog zu »StreamWriter« deklariert:
Dim objDateiLeser As StreamReader
Nun kann gelesen werden:
...
Else
objDateiLeser = New StreamReader(strWinVerz & "\" & _
DATEINAME)
strExcelDateiname = objDateiLeser.ReadToEnd()
objDateiLeser.Close()
objDateiLeser = Nothing
End If
Beim Testen wird sich später ein kleines Problem ergeben. Angenommen, »info.txt« existiert noch nicht. Dann wird die Datei erzeugt und mit einem beliebigen Pfad gefüllt. Die Text-Variable »strExcelDateiName«, die mit dem Dateinamen gefüllt werden soll (und im Anschluss weiter verarbeitet wird) ist nun noch nicht belegt. Das wird später zu einem Fehler führen. Deshalb sollte sie bei der Deklaration oder im If-Zweig gefüllt werden:
If File.Exists(strWinVerz & "\" & DATEINAME) = False Then
objDateiMacher = New StreamWriter(strWinVerz & "\" & _
DATEINAME)
objDateiMacher.Write("C:\Eigene Dateien\Statistik.xls")
objDateiMacher.Close()
objDateiMacher = Nothing
strExcelDateiname = "C:\Eigene Dateien\Statistik.xls"
Else
...
Wird ein Objekt »sr« wie folgt deklariert, dann listet die folgende Tabelle die wichtigsten Befehle zum Auslesen von Textdateien auf:
Dim sr As System.Io.StremReader
sr = New StreamReader("C:\Text.txt")
Tabelle 5.3
Die wichtigsten Methoden des Objekts StreamWriter
| Methode
|
Bedeutung
|
| Peek
|
gibt das nächste verfügbare Zeichen zurück, ohne es zu verarbeiten
|
| Read
|
liest das nächste Zeichen
|
| ReadLine
|
liest eine Zeile aus
|
| ReadBlock
|
liest count Zeichen aus
|
| ReadToEnd
|
liest alle Zeichen bis zum Ende aus
|
| Close
|
schließt das StreamReader-Objekt
|
Nun wird überprüft, ob diese Datei vorhanden ist:
If File.Exists(strExcelDateiname) = False Then
Ist sie es nicht, so wird der Benutzer gefragt, ob er nach ihr suchen möchte:
Dim intAntwort As Integer
intAntwort = MessageBox.Show("Die Datei " & _
strExcelDateiName & _
existiert nicht. Soll nach ihr gesucht werden? ", _
"Dateisuche", MessageBoxButtons.YesNo)
If intAntwort = DialogResult.Yes Then
Abbildung 5.2
Die Datei ist nicht vorhanden
Wird ein Objekt »sw« wie folgt deklariert, dann listet die folgende Tabelle die wichtigsten Befehle zum Hineinschreiben und Auslesen von Textdateien auf:
Dim sw As System.Io.StreamWriter
sw = New StreamWriter("C:\Text.txt")
Tabelle 5.4
Die wichtigsten Methoden des Objekts StreamWriter
| Methode
|
Bedeutung
|
| Flush
|
löscht alle Puffer für den aktuellen StreamWriter
|
| Write
|
schreibt ein Zeichen in die Datei
|
| WriteLine
|
schreibt eine Zeile in die Datei
|
| Close
|
schließt die Datei
|
Interessant ist hierbei, dass der Befehl auch mit einem Parameter append vom Typ Boolean formuliert werden kann, der angibt, ob die Daten angehängt werden oder nicht:
sw = New StreamWriter("C:\Text.txt", False)
überschreibt vorhandene Daten,
sw = New StreamWriter("C:\Text.txt", True)
hängt die neuen Daten an die alten an.
|